﻿//------------------------------------------------------------------------------
// The contents of this file are subject to the Microsoft Public License (Ms-PL)
// You may obtain a copy of the License at http://psadmin.codeplex.com/license. 
// 
// Software distributed under the License is distributed on an "AS IS" basis, 
// WITHOUT WARRANTY OF ANY KIND, either express or implied. 
// See the License for the specific language governing rights and limitations 
// under the License.
// 
// The initial developer is Ben Foster (ben.foster@retroviz.com)
// Copyright (c) Retroviz Limited (http://www.retroviz.com).
// All Rights Reserved.
//------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PSAdmin.Core.Interfaces;

namespace PSAdmin.Core
{
    public class PagedList<T> : List<T>, IPagedList {
        public PagedList(IList<T> source, int pageIndex, int pageSize, int recordCount) {
            this.RecordCount = recordCount;
            this.PageSize = pageSize;
            this.PageIndex = pageIndex;
            this.PageCount = recordCount / pageSize;

            if (recordCount % pageSize > 0)
                this.PageCount++;

            this.AddRange(source);
        }

        public int RecordCount { get;set; }
        public int PageIndex { get; set; }
        public int PageSize { get; set; }
        public int PageCount { get; set; }

        public bool HasPreviousPage { get { return (PageIndex > 0);}}
        public bool HasNextPage {get{ return (PageIndex * PageSize) <= RecordCount;}}
    }
}
